﻿<?php
 GLOBAL $CFG;
require_once($CFG->libdir . '/formslib.php');
require_once($CFG->dirroot . '/local/myplugin/lib.php');
require_once($CFG->dirroot . "/course/publish/lib.php");
	
//==================load mycss========================
$cssdir =  $CFG->wwwroot.'/local/myplugin/css/mycss.css';
echo '<link rel="stylesheet" href="'.$cssdir.'" type="text/css" media="screen" />';
//==================start colorbox=================
echo '<script src="./colorbox/jquery.min.js"></script>';
echo '<link rel="stylesheet" href="./css/colorbox.css" />';
echo '<script src="./colorbox/jquery.colorbox.js"></script>';
//==================load module.js========================
$jsdir =  $CFG->wwwroot.'/local/myplugin/module.js';
echo '<script src="'.$jsdir.'"></script>';
//==================end load js=================

$cssdir =  $CFG->wwwroot.'/local/myplugin/css/mycss.css';
echo '<link rel="stylesheet" href="'.$cssdir.'" type="text/css" media="screen" />';
echo '<script>
			$(document).ready(function(){
				$(".iframe").colorbox({iframe:true, width:"60%", height:"80%", onClosed:function(){location.reload(true); }});
			});
		</script>';	


$jsmodule = array(
    'name'  =>  'local_myplugin',
    'fullpath'  =>  '/local/myplugin/module.js',
    'requires'  =>  array('base', 'node', 'io', 'json')
);
$PAGE->requires->js_init_call('M.local_myplugin.init', null, false, $jsmodule);
echo  '<link rel="stylesheet" href="./treeview/jquery.treeview.css" />
		<script src="./colorbox/jquery.min.js"></script>
		 <script src="./treeview/lib/jquery.cookie.js" type="text/javascript"></script>
		 <script src="./treeview/jquery.treeview.js" type="text/javascript"></script>';



//*************************************************************************************************
//*					CÁC FORM QUẢN LÝ THÔNG TIN CHƯƠNG TRÌNH ĐÀO TẠO		
//*************************************************************************************************

/**
 * Form được sử dụng cho trang add_program
 */ 
class form_add_program extends moodleform{

	public function definition () {
		global $DB;
		$mform =& $this->_form;
		
		$load = $this->_customdata['load'];
		
		$mform->addElement('html','<div class="headingblock header"><a href="#" onclick="show_panel();">Chương trình đào tạo mới</a></div>');
		
		//Phần thêm chương trình
		$mform->addElement('html','<div id="control_panel" style="display: none">');
	
		//Tên chương trình đào tạo
		$mform->addElement('text', 'txtten', 'Tên chương trình', $attributes='size="40"');
		$mform->addElement('html','</div>'); //Kết thúc thêm chương trình
		$mform->setType('txtten', PARAM_TEXT);
		$mform->addRule('txtten', 'This field cannot be blanked!', 'required', null, 'client');
		
		//Trình độ đào tạo
		$mform->addElement('text', 'txtlevel', 'Trình độ đào tạo', $attributes='size="40"');
		$mform->setType('txtlevel', PARAM_TEXT);
		$mform->addRule('txtlevel', 'This field cannot be blanked!', 'required', null, 'client');
		
		//Loại hình đào tạo
		$mform->addElement('text', 'txttype', 'Loại hình đào tạo', $attributes='size="40"');
		$mform->setType('txttype', PARAM_TEXT);
		$mform->addRule('txttype', 'This field cannot be blanked!', 'required', null, 'client');
		
		$mform->addElement('htmleditor', 'txtdesc', 'Mô tả');
		$mform->setType('txtdesc', PARAM_CLEANHTML);
		$mform->addElement('hidden', 'id', '');
		$mform->setType('id', PARAM_TEXT);
				
		$mform->addElement('submit', 'submitbutton', get_string('savechanges'), array('id'=>'submitbutton','style'=>'display: none'));
		
		$mform->closeHeaderBefore('submitbutton');
		

		$mform->addElement('html','<div id="lodiv" style="display: none;"><div id="mess" class="success" ></div></div>');
		
		//Hiển thị danh sách các chương trình đào tạo hiện có
		$mform->addElement('html','<div class="headingblock header" style="margin-top: 10px;">Các chương trình đào tạo hiện có</div>');
		$mform->addElement('html','<div id="programList"></div>');
		
	}
	function validation($data)
	{
		
	}
}

/**
 * Form được sử dụng cho trang quick_edit_program 
 */
class form_modify_program extends moodleform{

	public function definition () {
		global $DB;
		$mform =& $this->_form;
		
		//Lấy dữ liệu từ GET hoặc POST
		$id = $this->_customdata['id'];
	
		//Lấy program có id = subjectid
		$program = $DB->get_record('program',array('id'=>$id));
		
		//Lưu lại dữ liệu để sử dụng trong trường hợp resubmit			
		$mform->addElement('html','<input type=hidden name=id value='.$id. '>');
		
		$mform->addElement('html','<div class="headingblock header">Chỉnh sửa thông tin chương trình</div>');
		//Tên chương trình đào tạo
		$mform->addElement('text', 'txtten', 'Tên chương trình', $attributes='size="40"');
		$mform->setType('txtten', PARAM_TEXT);
		$mform->addRule('txtten', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->setDefault('txtten',$program->program_name);
		
		//Trình độ đào tạo
		$mform->addElement('text', 'txtlevel', 'Trình độ đào tạo', $attributes='size="40"');
		$mform->setType('txtlevel', PARAM_TEXT);
		$mform->addRule('txtlevel', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->setDefault('txtlevel',$program->program_level);
		
		//Loại hình đào tạo
		$mform->addElement('text', 'txttype', 'Loại hình đào tạo', $attributes='size="40"');
		$mform->setType('txttype', PARAM_TEXT);
		$mform->addRule('txttype', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->setDefault('txttype',$program->program_type);
		
		$mform->addElement('htmleditor', 'txtdesc', 'Mô tả');
		$mform->setType('txtdesc', PARAM_CLEANHTML);
		
		$mform->addElement('submit', 'submitbutton', get_string('savechanges'));
		$mform->closeHeaderBefore('submitbutton');		
	}
}

/*
 * Form trình bày thông tin môn học
 * được sử dụng cho trang program_info
 */ 
class form_view_program extends moodleform {
	public function definition () 
	{	
		global $DB;
		$mform =& $this->_form;
		
		//Lấy dữ liệu từ GET hoặc POST
		$id = $this->_customdata['id'];
		//Lưu lại dữ liệu để sử dụng trong trường hợp resubmit			
		$mform->addElement('html','<input type=hidden name=id value='.$id. '>');
		
		$mform->addElement('html','<div class="headingblock header" align=center>Thông tin chương trình đào tạo</div>');
		
		$mform->addElement('html','<table class=generalbox align=center cellpadding="5">');
		//Lấy chương trình đào tạo mà môn học phải nằm trong 1 chương trình đào tạo
		$program = $DB->get_record('program', array('id'=>$id));
		$mform->addElement('html','<tr><td class=header>Tên chương trình</td><td>'.$program->program_name.'</td></tr><tr><td class=header>Trình độ đào tạo</td><td>'.$program->program_level.'</td></tr>'.'<tr><td class=header>Loại hình đào tạo</td><td>'.$program->program_type.'</td></tr>');
		
		//Lấy ngành học có id = majorid 
		$majors = $DB->get_records('major',array('program_id'=>$id));
		$mform->addElement('html','<tr><td class=header valign=top>Các ngành đào tạo</td><td>');
		$i = 0;
		foreach($majors as $m) {
			$i++;
			$mform->addElement('html','<p>'.$i.'. '.$m->major_name.'</p>');
		}
		
		$mform->addElement('html','</td><tr></table>');
		
	}
}
/**
 * Form hiển thị nội dung chương trình đào tạo
 * Được sử dụng cho trang view_curriculum
 */
class form_view_curriculum extends moodleform {
	public function definition () {
		global $DB;
		$mform =& $this->_form;

		$mform->addElement('html', '<div class="headingblock header">Thông tin về chương trình đào tạo</div>');
		//Lấy danh sách các chương trình đào tạo và bỏ vào combobox, khi chọn 1 chương trình thì 
		//các chuyên ngành trong chương trình dc liệt kê
		$programs = $DB->get_records('program');
		$mform->addElement('html','<table align=center><tr><td>Chương trình đào tạo</div></td><td>');
		$mform->addElement('html','<select name=program id=cboprogram onChange="showMajorInCheckbox(this.options[this.selectedIndex].value);">');
		$mform->addElement('html','<option name=program value=not>- Chọn chương trình đào tạo</option>');
		foreach($programs as $program) {
			//parent option
			$mform->addElement('html','<option name=program value='.$program->id.'>'.$program->program_name.' - Hệ '.$program->program_type.'</option>');	
		}
		$mform->addElement('html','</select></td></tr>');
		//$mform->addElement('html','<tr><td>Ngành</td><td><select name=major[] id=major multiple=multiple size=6></select></td></tr>');	//Giữ chỗ để hiển thị danh sách ngành học
		$mform->addElement('html','<tr><td>Ngành</td><td><div name=major id=major ></div></td></tr>');	//Giữ chỗ để hiển thị danh sách ngành học
		//Các nút chức năng
		$mform->addElement('html','<tr><td></td><td>'.
		'<button type=button name=btnView onclick="showCurriculum(cboprogram.options[cboprogram.selectedIndex].value);" >Xem</button>'.
		'<button type=button name=btnExport onclick="exportCurriculum(cboprogram.options[cboprogram.selectedIndex].value);" >Export</button>'.
		'</td></tr></table>');
		
		
		$mform->addElement('html','<div id="lodiv" style="display: none;"></div>');
		$mform->addElement('html','<div id="Curriculum"></div>');
		
	$mform->closeHeaderBefore('buttonar');
		echo '<div id="toolTipLayer" style="position:absolute; visibility: hidden;left:0;right:0"></div>';
	}
}
	
//*************************************************************************************************
//*					CÁC FORM QUẢN LÝ THÔNG TIN KHỐI KIẾN THỨC
//*************************************************************************************************

/**
 * Form được sử dụng cho trang add_bok
 */ 
class form_add_block_knowledge extends moodleform {
	public function definition () 
	{
		global $DB;
		$mform =& $this->_form;
		$programid = $this->_customdata['program'];
		$load = $this->_customdata['load'];
		
		$mform->addElement('html','<div class="headingblock header"><a href="#" onClick="show_panel();">Khối kiến thức mới</a></div>');
		//Chương trình hoặc chuyên ngành áp dụng khối kiến thức này
		$options = array('not'=>'- Chọn một chương trình đào tạo');
		$programs = $DB->get_records('program');
		foreach($programs as $program) {
			//parent option
			$options[$program->id] = $program->program_name.' - Hệ '.$program->program_type;
		}
		//Phần khối kiến thức mới
		$mform->addElement('html','<div id="control_panel" style="display: none;">');
		$mform->addElement('select', 'program', "Áp dụng cho", $options, array('id'=>'cboprogram','onChange'=>'showMajorInCheckbox(this.options[this.selectedIndex].value);'));
		if($programid != "") {
			$mform->setDefault('program', $programid);
			echo '<script>showMajorInCheckbox('.$programid.')</script>';
		}
		$mform->addElement('html','</div>'); //Kết thúc phần thêm khối kiến thức
		$mform->addElement('html','<table><tr><td valign=top><pre>                       </pre></td><td>');
		$mform->addElement('html','<div name="major" id="major"></div>');
		$mform->addElement('html','</td></tr></table>');
		$mform->addRule('program', 'Chọn một chuyên ngành hoặc chương trình đào tạo!', 'required', null, 'client');
		
		//Tên khối kiến thức
		$mform->addElement('text', 'txtten', 'Tên khối kiến thức', $attributes='size="80"',array('id'=>'txtten'));
		$mform->setType('txtten', PARAM_TEXT);
		$mform->addRule('txtten', 'This field cannot be blanked!', 'required', null, 'client');
		
		//Số tín chỉ
		$mform->addElement('text', 'txttinchi', 'Số tín chỉ', $attributes='size="10"');
		$mform->addRule('txttinchi', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->addRule('txttinchi', 'Xin vui lòng điền số tín chỉ !', 'nonzero', null, 'client');
		$mform->registerRule('compare','function','isGreaterThanZero');
		$mform->addRule('txttinchi', 'Xin vui lòng điền số tín chỉ > 0!', 'compare', 'bok_credit_num');
		$mform->setType('txttinchi', PARAM_TEXT);
		
		//Mô tả
		$mform->addElement('htmleditor', 'txtdesc', 'Mô tả');
		$mform->setType('txtdesc', PARAM_CLEANHTML);
		
		//Chọn môn học cho khối kiến thức
		echo '<script>
			$(document).ready(function()
			{
				$(".inline").colorbox(
				{
					inline:true, 
					width:"80%", 
					height:"80%"
		});
			});
		</script>';
		//chon mon hoc
		$mform->addElement('html','<a class="inline" style="margin-left:16%;" onClick="get_all_subject_for_add_block();" href="#monhoc" >Chọn môn học</a>');
		//div hien thị nhung subject da chon
		$mform->addElement('html', '<div id="selected_subject" style="display:none">');
		//Tiện ích tìm kiếm môn học 
		$mform->addElement('html', '<table id="tb_selected_subject" class=generalbox border=1 align=center style="">
		<th class="headingblock header" width=80px>Mã môn học </th>
		<th class="headingblock header" width=200px>Tên môn học</th>
		<th class="headingblock header" width=80px>Số tín chỉ</th>
		<th class="headingblock header" width=120px>Số giờ lý thuyết</th>
		<th class="headingblock header" width=120px>Số giờ thực hành</th>
		</table>');
		
		$mform->addElement('html','</div>');
		//div ẩn dùng để hiện colorbox
		$mform->addElement('html','<div style="display:none"><div id="monhoc"></div></div>');
		//submit button
		$mform->addElement('submit', 'submitbutton', '  '.get_string('savechanges').'  ',array('id'=>'submitbutton','style'=>'display: none'));
		$mform->closeHeaderBefore('submitbutton');
		
		//============================CÁC KHỐI KIẾN THỨC HIỆN CÓ=============================//
		$mform->addElement('html','<div class="headingblock header" style="margin-top: 10px;">Các khối kiến thức hiện có</div>');
		//Chương trình hoặc chuyên ngành áp dụng khối kiến thức này
		$mform->addElement('select', 'existingprogram', "Áp dụng cho", $options, array('id'=>'cbo_academic_program','onChange'=>'showCurriculumStructure();'));
		if($programid != "") {
			$mform->setDefault('existingprogram', $programid);
			echo '<script>loadCurriculumStructure('.$programid.');</script>';
		}
		
		$mform->addElement('html','<div id="cboblock" name="block"></div>');
		
		$mform->addElement('html','<div id="lodiv" style="display: none;"><div id="mess" class="success" ></div></div>');	
	}
	//Hàm kiểm tra các giá trị nhập vào
	function validation($data)
	{	
		
	}
}

class form_test extends moodleform {
	public function definition()
	{
		global $DB;
		$mform =& $this->_form;
	
		// $mform->addElement('text', 'txtid', 'Name');
		// $mform->addRule('txtid', null, null ,null, 'client');
		
		$mform->addElement('text', 'txttest', 'test', array('id'=>'txttest','onblur'=>'check_num("txttest", "khong duoc nhap so am");', 'onChange'=>'check_num("txttest", "khong duoc nhap so am");'));
		
		//echo '<script>allow_numeric_input_only("txttest");</script>';
		$mform->addElement('submit', 'submitbutton', 'submit');
		
	}
	
	function validation($data)
	{
		$errors=array();
		$textvalue=$data['txttest'];
		//echo '<script>valid();</script>';
		if ($textvalue < 0)
		{
			$errors['txttest']= "nhap so lon hon 0";
			echo '<script>alert("nhap so lon hon 0");</script>';
			echo '<script>check_num("txttest", "khong duoc nhap so am");</script>';
		}
		print_object($errors);
		return $errors;
	}
}

/*
 * form chỉnh sửa thông tin khối kiến thức
 * được sử dụng cho trang modify_bok
 */
class form_modify_block_knowledge extends moodleform {
	
	public function definition () 
	{	
		global $DB;
		$mform =& $this->_form;
		
		//Lấy dữ liệu từ GET hoặc POST
		$programid = $this->_customdata['program'];
		$blockid = $this->_customdata['block'];
		
		//Lưu lại dữ liệu để sử dụng trong trường hợp resubmit			
		$mform->addElement('html','<input type=hidden name=program value='.$programid. '>');
		$mform->addElement('html','<input type=hidden name=block value='.$blockid.'>');
		
		$mform->addElement('html','<div class="headingblock header">Chỉnh sửa khối kiến thức</div>');
		//Chương trình hoặc chuyên ngành áp dụng khối kiến thức này
		$program = $DB->get_record('program', array('id'=>$programid));
		$mform->addElement('text', 'txtprogram', "Áp dụng cho", array('id'=>'txtprogram', 'readonly'=>'readonly','size'=>'50'));
		$mform->setDefault('txtprogram',$program->program_name.' - Hệ '.$program->program_type); // Set default value by using a passed parameter
		
		//Khối kiến thức
		$block = $DB->get_record('block_of_knowledge', array('id'=>$blockid));
		$mform->addElement('text', 'txtblock_name', "Tên khối kiến thức", array('id'=>'txtblock_name', 'blockid'=>$blockid, 'size'=>'70'));		
		$mform->setDefault('txtblock_name',$block->bok_name); // Set default value by using a passed parameter
		$mform->addElement('text', 'block_credit', "Số tín chỉ", array('id'=>'block_credit','size'=>'5'));		
		$mform->setDefault('block_credit',$block->bok_credit); // Set default value by using a passed parameter
		//Các ngành trong chương trình đào tạo
		$sql = "SELECT mdl_major.id, mdl_major.major_name, mdl_major_block.blockofknowledge_id ".
		" FROM mdl_major left join mdl_major_block on mdl_major.id = mdl_major_block.major_id ".
		" WHERE mdl_major.program_id = ".$programid;
		$majors = $DB->get_records_sql($sql);
		$mform->addElement('html', '<table><tr><td>Áp dụng cho chuyên ngành</td><td>');
		foreach($majors as $m) {
			if($m->blockofknowledge_id == $blockid) {
				$mform->addElement('html', '<div><input type=checkbox name="major[]" checked value='.$m->id.'/>'."&nbsp;".$m->major_name.'</div>');
			}
			else {
				$mform->addElement('html', '<div><input type=checkbox name="major[]" value='.$m->id.'/>'."&nbsp;".$m->major_name.'</div>');
			}
		}
		$mform->addElement('html', '</td></tr></table>');
		//Mô tả
		$mform->addElement('htmleditor', 'txtdesc', 'Mô tả');
		$mform->setType('txtdesc', PARAM_CLEANHTML);
		$mform->setDefault('txtdesc',$block->description);
		
		//Tiện ích tìm kiếm môn học 
		$mform->addElement('html','<div id="Filter" >');
		$mform->addElement('text','FilterTextBox','Tìm kiếm môn học', array('id'=>'FilterTextBox', 'size'=>'40'));
		$mform->addElement('html','</div>');
		
		//div hien thị nhung subject da chon
		$sql = "SELECT mdl_subject.id, mdl_subject.subject_id, mdl_subject.subject_name_vn, ".
				" mdl_subject.subject_credit, mdl_subject.subject_theory_hr, mdl_subject.subject_practice_hr, ".
				" mdl_subject_block.blockofknowledge_id".
				" FROM mdl_subject left join mdl_subject_block on mdl_subject.id = mdl_subject_block.subject_id ".
				" WHERE mdl_subject.program_id = ".$programid;
		$subjects = $DB->get_records_sql($sql);
		
		$mform->addElement('html','<div id="selected_subject" style="display:block; margin-left:5%; width:800px; height:400px; overflow:scroll; border: .2em ridge; margin-top: 10px;"><table id="tb_selected_subject" class="filterable generalbox" border=1 align=center >
		<th class="headingblock header" width=80px>Mã môn học</th>
		<th class="headingblock header" width=200px>Tên môn học</th>
		<th class="headingblock header" width=80px>Số tín chỉ</th>
		<th class="headingblock header" width=120px>Số giờ lý thuyết</th>
		<th class="headingblock header" width=120px>Số giờ thực hành</th>
		<th class="headingblock header" width=80px>Chọn</th>');
		foreach($subjects as $s) {
			if($s->blockofknowledge_id == $blockid) {
				$mform->addElement('html','<tr class="highlight" id="selected'.$s->id.'">
				<td >'.$s->subject_id.'</td>
				<td>'.$s->subject_name_vn.'</td>
				<td align="center">'.$s->subject_credit.'</td>
				<td align="center">'.$s->subject_theory_hr.'</td>
				<td align="center">'.$s->subject_practice_hr.'</td>');				
				$mform->addElement('html','<td align="center"><input type=checkbox name="selectedsubject[]" checked value="'.$s->id.'" onclick="highlight(this);"/></td>');
			}
			else {
				$mform->addElement('html','<tr class="subject" id="selected'.$s->id.'">
				<td>'.$s->subject_id.'</td>
				<td>'.$s->subject_name_vn.'</td>
				<td align="center">'.$s->subject_credit.'</td>
				<td align="center">'.$s->subject_theory_hr.'</td>
				<td align="center">'.$s->subject_practice_hr.'</td>');				
				$mform->addElement('html','<td align="center"><input type=checkbox name="selectedsubject[]" value="'.$s->id.'" onclick="highlight(this);" /></td>');
			}
		}
		$mform->addElement('html','</table></div>');
		// $mform->addElement('html','<div id="selected_subject" style="display:none"><table id="tb_selected_subject" class="filterable generalbox" border=1 align=center style="">
		// <th class="headingblock header" width=80px>Mã môn học</th>
		// <th class="headingblock header" width=200px>Tên môn học</th>
		// <th class="headingblock header" width=80px>Số tín chỉ</th>
		// <th class="headingblock header" width=120px>Số giờ lý thuyết</th>
		// <th class="headingblock header" width=120px>Số giờ thực hành</th>
		// </table></div>');
		
		//div ẩn dùng để hiện colorbox
		// $mform->addElement('html','<div style="display:none"><div id="monhoc"  ></div></div>');
		 //submit button
		$mform->addElement('submit', 'submitbutton', '  '.get_string('savechanges').'  ');
		
		$mform->closeHeaderBefore('submitbutton');
		$mform->addElement('html','<div id="lodiv" style="display: none;"><div id="mess" class="success" ></div></div>');	
	}
}	
	
/*
 * Form trình bày thông tin khối kiến thức
 * được sử dụng cho trang block_info
 */ 
class form_view_block_knowledge extends moodleform {
	public function definition () 
	{	
		global $DB;
		$mform =& $this->_form;
		
		//Lấy dữ liệu từ GET hoặc POST
		$id = $this->_customdata['id'];
		//Lưu lại dữ liệu để sử dụng trong trường hợp resubmit			
		$mform->addElement('html','<input type=hidden name=id value='.$id. '>');
		
		$mform->addElement('html','<div class="headingblock header" align=center>Thông tin khối kiến thức</div>');
		
		$mform->addElement('html','<table class=generalbox align=center cellpadding="5">');
		//Lấy khối kiến thức có id = majorid 
		$block = $DB->get_record('block_of_knowledge',array('id'=>$id));
		$mform->addElement('html','<tr><td class=header>Tên khối</td><td>'.$block->bok_name.'</td><tr><td class=header>Số tín chỉ</td><td>'.$block->bok_credit.'</td></tr><tr><td class=header>Mô tả</td><td>'.$block->description.'</td></tr>');
		
		//Lấy chương trình đào tạo mà khối kiến thức thuộc về
		if($block->program_id != null) {
			$program = $DB->get_record('program', array('id'=>$block->program_id));
			$mform->addElement('html','<tr><td class=header>Áp dụng trong chương trình</td><td>'.$program->program_name. ' - Hệ '.$program->program_type.'</td></tr>');
		}
		else {
			//Lấy các ngành có áp dụng khối kiến thức này
			$sql = 'SELECT * '.
					' FROM (mdl_major inner join mdl_major_block on mdl_major.id = mdl_major_block.major_id) inner join mdl_program on mdl_major.program_id = mdl_program.id'.
					' WHERE mdl_major_block.blockofknowledge_id = '.$block->id;
			
			$majors = $DB->get_records_sql($sql);
			$program_name = "";
			if(count($majors)>0) {
				$mform->addElement('html','<tr><td class=header>Áp dụng cho ngành</td><td>');
				foreach($majors as $m) {
					$mform->addElement('html','<p>'.$m->major_name.' </p>');
					$program_name = $m->program_name.' - Hệ '.$m->program_type;
				}
				$mform->addElement('html','</td></tr>');
				$mform->addElement('html','<tr><td class=header>Thuộc chương trình</td><td>'.$program_name.'</td></tr>');
			}
		}
		
		$mform->addElement('html','</table>');
		
		$mform->addElement('html','<div class=heading1 >Các môn học trong khối kiến thức</div>');
		$i = 0;
		//Lấy danh sách các môn học  của mỗi block
		$sql = 'SELECT * '.
			   ' FROM mdl_subject_block inner join mdl_subject on mdl_subject.id = mdl_subject_block.subject_id '.
			   ' WHERE mdl_subject_block.blockofknowledge_id = '.$block->id;
		$subjects = $DB->get_records_sql($sql);
		$mform->addElement('html','<table class=generalbox align=center cellpadding="3"><th>STT</th><th>Mã số</th><th>Tên môn học</th><th>Số tín chỉ</th>');
		$j = 0;
			
		foreach($subjects as $s) {
			$j++;
			$mform->addElement('html','<tr><td>'.$j.'</td><td>'.$s->subject_id.'</td><td>'.$s->subject_name_vn.'</td><td>'.$s->subject_credit.'</td></tr>');
		}
		$mform->addElement('html','</table>');
		
	}
}
//*************************************************************************************************
//*					CÁC FORM QUẢN LÝ THÔNG TIN MÔN HỌC		
//*************************************************************************************************
/*
 * Form thêm môn học mới
 * được sử dụng cho trang add_subject
 */
class form_add_subject extends moodleform{

	public function definition () {
		global $DB;
		$mform =& $this->_form;
		
		//Lấy dữ liệu từ GET hoặc POST
		$programid = $this->_customdata['program'];
		
		//Lưu lại dữ liệu để sử dụng trong trường hợp resubmit			
		$mform->addElement('html','<input type=hidden name=program value='.$programid. '>');
		
		echo '<div id="toolTipLayer" style="position:absolute; visibility: hidden;left:0;right:0"></div>';
		
		//add header
		$mform->addElement('html','<div class="headingblock header"><a href="#" onClick="show_panel(); setoptiontitle_automatic();">Môn học mới</a></div>');
		
		//Chọn chương trình đào tạo vì 1 môn học phải nằm trong 1 chương trình đào tạo
		$options = array('all'=>'- Chọn một chuyên ngành hoặc chương trình đào tạo');
		$programs = $DB->get_records('program');
		foreach($programs as $program) {
			//parent option
			$options[$program->id] = $program->program_name.' - Hệ '.$program->program_type;
		}
		$mform->addElement('select', 'cbprogram', "Chọn chương trình", $options, array('onChange'=>'showSubjectByProgram(this.options[this.selectedIndex].value);'));
		$mform->addRule('cbprogram', 'Chọn một chuyên ngành hoặc chương trình đào tạo!', 'required', null, 'client');
		//Load lại các môn học thuộc programid
		if($programid != "") {
			$selectedProgram = $DB->get_record('program', array('id'=>$programid));
			$mform->setDefault('cbprogram', $programid);
			echo '<script>showSubjectByProgram('.$programid.')</script>';
		}
		
		
		//Phần thêm môn mới
		$mform->addElement('html','<div id="control_panel" style="display: none;">');
		$mform->addElement('text', 'txtid', 'Mã môn học', $attributes='size="10"');
		$mform->setType('txtid', PARAM_TEXT);
		$mform->addRule('txtid', 'This field cannot be blanked!', 'required', null, 'client');
		
		$mform->addElement('text', 'txttenvn', 'Tên tiếng Việt', $attributes='size="50"');
		$mform->setType('txttenvn', PARAM_TEXT);
		$mform->addRule('txttenvn', 'This field cannot be blanked!', 'required', null, 'client');
		
		$mform->addElement('text', 'txtteneng', 'Tên tiếng Anh', $attributes='size="50"');
		$mform->setType('txtteneng', PARAM_TEXT);
		
		$mform->addElement('text', 'txttinchi', 'Credit', $attributes='size="5"');
		$mform->setType('txttinchi', PARAM_TEXT);
		$mform->addRule('txttinchi', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->addRule('txttinchi', 'Please enter number only!', 'numeric', null, 'client');
		
		$mform->addElement('text', 'txtlythuyet', 'Số giờ lý thuyết', $attributes='size="5"');
		$mform->setType('txtlythuyet', PARAM_TEXT);
		$mform->addRule('txtlythuyet', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->addRule('txtlythuyet', 'Please enter number only!', 'numeric', null, 'client');
		
		$mform->addElement('text', 'txtthuchanh', 'Số giờ thực hảnh', $attributes='size="5"');
		$mform->setType('txtthuchanh', PARAM_TEXT);
		$mform->addRule('txtthuchanh', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->addRule('txtthuchanh', 'Please enter number only!', 'numeric', null, 'client');
		
		$mform->addElement('htmleditor','txtdesc','Mô tả chung');
		$mform->setType('txtdesc', PARAM_TEXT);
		
		$mform->addElement('hidden', 'id', '', $attributes='size="20"');
		$mform->setType('id', PARAM_TEXT);
		//$mform->addElement('html','</div>');	//Kết thúc phần thêm môn mới
		
        $teachers = array();
		$teachers = $DB->get_records('user');
        $teacher_string='';
        
		foreach($teachers as $teacher){
		//	parent option
			$teachers[$teacher->id] = $teacher->firstname.' - '.$teacher->lastname;
            $teacher_string = $teacher_string.'#'.$teachers[$teacher->id].'#';
		}

        //echo"<script>alert('".$teacher_string."')</script>";
		 $mform->addElement('html','<table border="0" align="left" width="80%" style="margin-left:10%;">');
		 $mform->addElement('html','<div></br></div>');
		 $mform->addElement('html','<tr><center><b>__________Chọn giáo viên__________<b></center></tr>');
         
        $mform->addElement('html','<tr><td align="center"><b>Teacher filter</b>');
        $mform->addElement('text', 'filter', '',$attributes='size="20",onkeyup ="teacherfilter(\''.$teacher_string.'\',this.value);" ');
        $mform->addElement('html','</td></tr>');
		$mform->addElement('html','<tr>');
        
        $mform->addElement('html','<td align = "center"><b>Teacher List</b><br/>');
        

	   $select = &$mform->addElement('select', 'teacher', '', $teachers, array('id'=>'teacher','style'=>'width:600px','onmouseover'=>'setoptiontitle_automatic();','style'=>'height:200px','align'=>'left'));
        $select->setMultiple(true);
        $mform->addElement('html','</td>');
        
        $mform->addElement('html','<td>');
        $mform->addElement('html','<table border="0" align="left" width="80%" >');
        $mform->addElement('html','<tr><td>');
       	$mform->addElement('html','<input type="button" style="width:30px" value=">" onclick=\'selectTeacher("ins")\'/></br>');
        $mform->addElement('html','<input type="button" style="width:30px" value="<" onclick=\'removeTeacher("ins")\'/></td>');
        $mform->addElement('html','<td align ="center"><b>Instructor List</b>');
        $select = &$mform->addElement('select', 'instructor', '', array(), array('id'=>'instructor','style'=>'width:190px','onmouseover'=>'setoptiontitle_automatic();','align'=>'left'));
        $select->setMultiple(true);
        $mform->addElement('html','</td></tr>');
        
        
        $mform->addElement('html','<tr><td>');
        $mform->addElement('html','<input type="button" style="width:30px"  value=">" onclick=\'selectTeacher("ta")\'/></br>');
		$mform->addElement('html','<input type="button" style="width:30px" value="<" onclick=\'removeTeacher("ta")\'/></td>');
        $mform->addElement('html','<td align ="center"><b>TA List</b>');
        $select = &$mform->addElement('select', 'ta', '', array(), array('id'=>'ta','style'=>'width:190px','onmouseover'=>'setoptiontitle_automatic();','align'=>'left'));
       	$select->setMultiple(true);
        $mform->addElement('html','</td></tr>');
        $mform->addElement('html','</table>');
        $mform->addElement('html','</td>');
        
        
        $mform->addElement('html','<div id = instructor_temp>');
        $mform->addElement('text', 'instructor_temp', '', $attributes='size="10"');
        $mform->addElement('html','</div>');

        $mform->addElement('html','<div id = ta_temp >');
        $mform->addElement('text', 'ta_temp', '', $attributes='size="5"');
        $mform->addElement('html','</div>');       
        
		$mform->addElement('html','</tr>');
		$mform->addElement('html','</table>');
		$mform->addElement('html','</div>');//Kết thúc phần thêm môn mới
	   
		$mform->addElement('submit', 'submitbutton', get_string('savechanges'), array('id'=>'submitbutton','style'=>'display: none'));
		
		$mform->closeHeaderBefore('submitbutton');
		//Tiện ích tìm kiếm môn học 
		$mform->addElement('html','<div id=Filter style="display: none">');
		$mform->addElement('text','FilterTextBox','Tìm kiếm môn học', array('id'=>'FilterTextBox', 'size'=>'40'));
		$mform->addElement('html','</div>');

		$mform->addElement('html','<div id="lodiv" style="display: none;"><div id="mess" class="success" ></div></div>');
		$mform->addElement('html','<div id="listmon" class="headingblock header" style="margin-top: 10px; display: none;">Các môn hiện có</div>');
		$mform->addElement('html','<div id="subject_tb" style="display:none; margin-left:16%; width:800px; height:600px; overflow:scroll; border: .2em ridge; margin-top: 10px;"></div>');

	//==================filter teacher=================	
//echo '<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>';
//echo '<script>';
//      jQuery.fn.filterByText = function(textbox, selectSingleMatch) {
//        return this.each(function() {
//            var select = this;
//            var options = [];
//            $(select).find(\'option\').each(function() {
//                options.push({value: $(this).val(), text: $(this).text()});
//            });
//            $(select).data(\'options\', options);
//            $(textbox).bind(\'change keyup\', function() {
//                var options = $(select).empty().data(\'options\');
//                var search = $.trim($(this).val());
//                var regex = new RegExp(search,"gi");
//              
//                $.each(options, function(i) {
//                    var option = options[i];
//                    if(option.text.match(regex) !== null) {
//                        $(select).append(
//                           $(\'<option>\').text(option.text).val(option.value)
//                        );
//                    }
//                });
//                if (selectSingleMatch === true && $(select).children().length === 1) {
//                    $(select).children().get(0).selected = true;
//                }
//            });            
//        });
//    };
//
//echo '<script src="./colorbox/jquery.min.js"></script>';
//echo '<script>
//        
//      jQuery.fn.filterByText = function(textbox, selectSingleMatch) {
//        return this.each(function() {
//            var select = this;
//            var options = [];
//            $(select).find(\'option\').each(function() {
//                options.push({value: $(this).val(), text: $(this).text()});
//            });
//            $(select).data(\'options\', options);
//            $(textbox).bind(\'change keyup\', function() {
//                var options = $(select).empty().data(\'options\');
//                var search = $.trim($(this).val());
//                var regex = new RegExp(search,"gi");
//              
//                $.each(options, function(i) {
//                    var option = options[i];
//                    if(option.text.match(regex) !== null) {
//                        $(select).append(
//                           $(\'<option>\').text(option.text).val(option.value)
//                        );
//                    }
//                });
//                if (selectSingleMatch === true && $(select).children().length === 1) {
//                    $(select).children().get(0).selected = true;
//                }
//            });            
//        });
//    };
//    $(function() {
//        
//        $(\'#teacher\').filterByText($(\'#id_filter\'), true);
//        
//    });
//      
//    </script>';
//  echo '<script>
//        $(function() {
//        $(\'#teacher\').filterByText($(\'#id_filter\'), true);
//        });
//        </script>';
    }
	
	// function validation($data)
	// {
		// global $DB;
		// $sql="SELECT * FROM mdl_subject where subject_id='".$data['txtid']."'";
		// $errors=array();
		// if ($foundid = $DB->get_records_sql($sql))
		// {
			// $errors['txtid']= "This ID has been using!";
		// }
		// return $errors;
	// }
    
}

/**
 * form chỉnh sửa thông tin môn học
 * được sử dụng cho trang quick_edit_subject
 */
class form_modify_subject extends moodleform {
	
	public function definition () 
	{	
		global $DB;
		$mform =& $this->_form;
		
		//Lấy dữ liệu từ GET hoặc POST
		$id = $this->_customdata['id'];
		
		//Lấy môn học có id = subjectid
		$subject = $DB->get_record('subject',array('id'=>$id));
		//Lưu lại dữ liệu để sử dụng trong trường hợp resubmit			
		$mform->addElement('html','<input type=hidden name=id value='.$id. '>');
		$mform->addElement('html','<input type=hidden name=programid value='.$subject->program_id. '>');
		$mform->addElement('html','<div class="headingblock header" onblur ="setoptiontitle_automatic();">Chỉnh sửa thông tin môn học</div>');
		
		//Lấy chương trình đào tạo mà môn học trực thuộc
		$program = $DB->get_record('program', array('id'=>$subject->program_id));
		$mform->addElement('text', 'txtprogram', "Áp dụng cho", array('id'=>'txtprogram', 'readonly'=>'readonly','size'=>'50'));
		$mform->setDefault('txtprogram',$program->program_name.' - Hệ '.$program->program_type);	
		//Mã môn học
		$mform->addElement('text', 'txtid', 'Mã môn học', $attributes='size="10"');
		$mform->setType('txtid', PARAM_TEXT);
		$mform->addRule('txtid', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->setDefault('txtid',$subject->subject_id);
		//Tên môn học
		$mform->addElement('text', 'txttenvn', 'Tên tiếng Việt', $attributes='size="50"');
		$mform->setType('txttenvn', PARAM_TEXT);
		$mform->addRule('txttenvn', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->setDefault('txttenvn',$subject->subject_name_vn);
		
		$mform->addElement('text', 'txtteneng', 'Tên tiếng Anh', $attributes='size="50"');
		$mform->setType('txtteneng', PARAM_TEXT);
		$mform->setDefault('txtteneng',$subject->subject_name_en);
		//Số tín chỉ
		$mform->addElement('text', 'txttinchi', 'Credit', $attributes='size="5"');
		$mform->setType('txttinchi', PARAM_TEXT);
		$mform->addRule('txttinchi', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->addRule('txttinchi', 'Please enter number only!', 'numeric', null, 'client');
		$mform->setDefault('txttinchi',$subject->subject_credit);
		//Số giờ lý thuyết
		$mform->addElement('text', 'txtlythuyet', 'Số giờ lý thuyết', $attributes='size="5"');
		$mform->setType('txtlythuyet', PARAM_TEXT);
		$mform->addRule('txtlythuyet', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->addRule('txtlythuyet', 'Please enter number only!', 'numeric', null, 'client');
		$mform->setDefault('txtlythuyet',$subject->subject_theory_hr);
		//Số giờ thực hành
		$mform->addElement('text', 'txtthuchanh', 'Số giờ thực hảnh', $attributes='size="5"');
		$mform->setType('txtthuchanh', PARAM_TEXT);
		$mform->addRule('txtthuchanh', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->addRule('txtthuchanh', 'Please enter number only!', 'numeric', null, 'client');
		$mform->setDefault('txtthuchanh',$subject->subject_practice_hr);
		//Mô tả
		$mform->addElement('htmleditor','txtdesc','Mô tả chung');
		$mform->setType('txtdesc', PARAM_TEXT);
        $mform->setDefault('txtdesc',$subject->abstract);

		
        $teachers = array();
		$teachers = $DB->get_records('user');
        $teacher_string='';
        
		foreach($teachers as $teacher){
		//	parent option
			$teachers[$teacher->id] = $teacher->firstname.' - '.$teacher->lastname;
            $teacher_string = $teacher_string.'#'.$teachers[$teacher->id].'#';
		}
        
        $mform->addElement('html','<table border="0" align="center" width="100%">');
        $mform->addElement('html','<div></br></div>');
        $mform->addElement('html','<tr><center><b>__________Chọn giáo viên__________<b></center></tr>');
        $mform->addElement('html','<tr><td align="center"><b>Teacher filter</b>');
        $mform->addElement('text', 'filter', '',$attributes='size="20",onkeyup ="teacherfilter(\''.$teacher_string.'\',this.value);" ');
        $mform->addElement('html','</td></tr>');
		$mform->addElement('html','<tr>');
        $mform->addElement('html','<tr>');
        // Teacher list
        $mform->addElement('html','<td align = "center"><b>Teacher List</b><br/>');
        $teachername = array();
        $teachers_array = $DB->get_records('teacher_subject', array('subject'=>$id));
        $teachers = array();
        $teachers = $DB->get_records('user');
        
       
            foreach($teachers as $teacher)
            {
                $n=0;
                $i=0;
                foreach($teachers_array as $teacher_array)
                {
                     
                    if($teacher->id != $teacher_array->teacher)
                    {
                     $i++;
                    }
                    $n++;
                }
             if($i==$n)
             $teachername[$teacher->id] = $teacher->firstname.' - '.$teacher->lastname;
            }
        $select = &$mform->addElement('select', 'teacher', '', $teachername, array('id'=>'teacher','style'=>'width:500px','style'=>'height:200px','align'=>'left','onmouseover'=>'setoptiontitle_automatic();'));
        $select->setMultiple(true);
        $mform->addElement('html','</td>');
        
        $mform->addElement('html','<td>');
        $mform->addElement('html','<table border="0" align="left" width="80%" >');
        $mform->addElement('html','<tr><td>');
       	$mform->addElement('html','<input type="button" style="width:30px" value=">" onclick=\'selectTeacher("ins")\'/></br>');
        $mform->addElement('html','<input type="button" style="width:30px" value="<" onclick=\'removeTeacher("ins")\'/></td>');
        $mform->addElement('html','<td align ="center"><b>Instructor List</b>');
        
        $instructor= array();
        $teachers_array = $DB->get_records('teacher_subject', array('subject'=>$id));
        $teachers = array();
        $teachers = $DB->get_records('user');
        
       foreach($teachers_array as $teacher_array)
        {
            
            if($teacher_array->role == 1)
            {
            
            foreach($teachers as $teacher)
            {
                
                if($teacher->id == $teacher_array->teacher)
                {
                 $instructor[$teacher->id] = $teacher->firstname.' - '.$teacher->lastname;
                }
                
            }
            }
            
       }


        $select = &$mform->addElement('select', 'instructor', '',$instructor, array('id'=>'instructor','style'=>'width:150px','align'=>'left','onmouseover'=>'setoptiontitle_automatic();'));
        $select->setMultiple(true);
        
        $mform->addElement('html','</td></tr>');
        
        $mform->addElement('html','<tr><td>');
        $mform->addElement('html','<input type="button" style="width:30px"  value=">" onclick=\'selectTeacher("ta")\'/></br>');
		$mform->addElement('html','<input type="button" style="width:30px" value="<" onclick=\'removeTeacher("ta")\'/></td>');
        $mform->addElement('html','<td align ="center"><b>TA List</b>');
        
        $taname = array();
        $teachers_array = $DB->get_records('teacher_subject', array('subject'=>$id));
        $teachers = array();
        $teachers = $DB->get_records('user');
        
        
        foreach($teachers_array as $teacher_array)
        {
            
            if($teacher_array->role == 2)
            {
            
            foreach($teachers as $teacher)
            {
                
                if($teacher->id == $teacher_array->teacher)
                {
                 $taname[$teacher->id] = $teacher->firstname.' - '.$teacher->lastname;
                }
                
            }
            }
            
       }
        
        $select = &$mform->addElement('select', 'ta', '', $taname, array('id'=>'ta','style'=>'width:150px','align'=>'left','onmouseover'=>'setoptiontitle_automatic();'));
        $select->setMultiple(true);
        
        $mform->addElement('html','</td></tr>');
        $mform->addElement('html','</table>');
        $mform->addElement('html','</td>');
      
        $mform->addElement('html','<div id = instructor_temp>');
        
        $instructer_temp = array();
        $i=0;
        foreach($teachers_array as $teacher_array)
        {
            
            if($teacher_array->role == 1)
            {
            
            foreach($teachers as $teacher)
            {
                
                if($teacher->id == $teacher_array->teacher)
                {
                 $instructor_temp[$i] = ','.$teacher->id.',';
                 
                 
                }
                
            }
            $i++;
            }
            
       }
       $instructor_string ='';
       $instructor_string = join($instructor_string, $instructor_temp);
        //echo "<script>alert('".$instructor_string."');</script>";
        
        $mform->addElement('text', 'instructor_temp', '',array ('value'=>$instructor_string, 'style'=>'display: none') ,$attributes='size="10"');
        $mform->addElement('html','</div>');

        $mform->addElement('html','<div id = ta_temp >');
        
        $ta_temp = array();
        $i=0;
        foreach($teachers_array as $teacher_array)
        {
            
            if($teacher_array->role == 2)
            {
            
            foreach($teachers as $teacher)
            {
                
                if($teacher->id == $teacher_array->teacher)
                {
                 $ta_temp[$i] = ','.$teacher->id.',';
                 
                }
                
            }
            $i++;
            }
            
       }
       $ta_string ='';
       $ta_string = join($ta_string, $ta_temp);

        
        $mform->addElement('text', 'ta_temp', '',array('value'=>$ta_string, 'style'=>'display: none'), $attributes='size="5"');
        $mform->addElement('html','</div>');        
        
		$mform->addElement('html','</tr>');
		$mform->addElement('html','</table>');
        
 //       $teachers_array = array();
//        $teachers_array = $DB->get_records('teacher_subject', array('subject'=>$id));
//        $ts_id_array =array();
//        $i=0;
//        foreach($teachers_array as $teacher_array)
//        {
//            $ts_id_array[$i]= ','.$teacher_array->ts_id.',';
//            $i++;
//        }
//        $ts_id_string = join($ts_id_string,$ts_id_array);
        $mform->addElement('html','<input type=hidden name=teachersubjectid value='.$ts_id_string. '>');
        //echo "<script>alert('".$ts_id_string."');</script>";
        $mform->addElement('submit', 'submitbutton', '  '.get_string('savechanges').'  ');
		
		$mform->closeHeaderBefore('submitbutton');
		$mform->addElement('html','<div id="lodiv" style="display: none;"><div id="mess" class="success" ></div></div>');	
	}
}

/*
 * Form trình bày thông tin môn học
 * được sử dụng cho trang subject_info
 */ 
class form_view_subject extends moodleform {
	public function definition () 
	{	
		global $DB;
		$mform =& $this->_form;
		
		//Lấy dữ liệu từ GET hoặc POST
		$id = $this->_customdata['id'];
		//Lưu lại dữ liệu để sử dụng trong trường hợp resubmit			
		$mform->addElement('html','<input type=hidden name=id value='.$id. '>');
		
		$mform->addElement('html','<div class="headingblock header" align=center>Thông tin môn học</div>');
		
		$mform->addElement('html','<table class=generalbox align=center cellpadding="5">');
		//Lấy môn học có id = subjectid
		$subject = $DB->get_record('subject',array('id'=>$id));
		$mform->addElement('html','<tr><td class=header>Môn học</td><td>'.$subject->subject_name_vn.'</td></tr><tr><td class=header>Mã môn</td><td>'.$subject->subject_id.'</td></tr>
		<tr><td class=header>Tên tiếng Anh</td><td>'.$subject->subject_name_en.'</td></tr><tr><td class=header>Số tín chỉ</td><td>'.$subject->subject_credit.'</td></tr><tr><td class=header>Số giờ lý thuyết</td><td>'.$subject->subject_theory_hr.'</td></tr><tr><td class=header>Số giờ thực hành</td><td>'.$subject->subject_practice_hr.'</td></tr><tr><td class=header>Giới thiệu</td><td>'.$subject->abstract.'</td></tr>');
		
		//Lấy chương trình đào tạo mà môn học phải nằm trong 1 chương trình đào tạo
		$program = $DB->get_record('program', array('id'=>$subject->program_id));
		$mform->addElement('html','<tr><td class=header>Áp dụng trong chương trình</td><td>'.$program->program_name. ' - Hệ '.$program->program_type.'</td></tr>');
		
		//Lấy các khối kiến thức có sử dụng môn học này
		$sql = 'SELECT *  '.
				'FROM ((mdl_block_of_knowledge inner join mdl_subject_block on mdl_block_of_knowledge.id = mdl_subject_block.blockofknowledge_id) left outer join mdl_major_block on mdl_subject_block.blockofknowledge_id = mdl_major_block.blockofknowledge_id) left outer join mdl_major on mdl_major_block.major_id = mdl_major.id '.
				'WHERE mdl_subject_block.subject_id = '.$id;	
		$blocks = $DB->get_records_sql($sql);
		$mform->addElement('html','<tr><td class=header>Áp dụng cho khối kiến thức</td><td>');
		
		foreach($blocks as $b) {
			$mform->addElement('html','<p>'.$b->bok_name.'</p>');
		}
		$mform->addElement('html','</td></tr>');
		
		//Các chuyên ngành áp dụng môn này
		$mform->addElement('html','<tr><td class=header>Áp dụng cho ngành</td><td>');
		foreach($blocks as $b) {
			$mform->addElement('html','<p>'.$b->major_name.'</p>');
		}
		$mform->addElement('html','</td></tr>');
		
		$mform->addElement('html','</table>');
	}
}

/**
 *  Form import subject
 *  được sử dụng cho trang import_subject
 */ 
class form_import_subject extends moodleform{
	
        public function definition () {
            $mform =& $this->_form;
			
			$mform->addElement('html','<div class="headingblock header">Nhập thông tin môn học từ tập tin</div>');
			global $DB;
			$rs = $DB->get_records('program');
			$m = array(''=>'- Chọn chương trình đào tạo');
			foreach($rs as $r) {
				$m[$r->id] = $r->program_name.' - Hệ '.$r->program_type;
			}
			
			//add program select
			$selectpro=$mform->addElement('select', 'cbprogram', "Chương trình đào tạo", $m);
			$selectpro->setMultiple(false);
			$mform->addRule('cbprogram', 'Please select an Academic Program!', 'required', null, 'client');
			
			$options = array();
			$options['accepted_types'] = array('*.xls');
			$mform->addElement('filepicker', 'userpicturesfile', get_string('file'), 'size="40"', $options);
			$mform->addRule('userpicturesfile', null, 'required');
			
			$buttonarray=array();
			$buttonarray[] =& $mform->createElement('submit', 'submitpreview', "  Preview ");
			$buttonarray[] =& $mform->createElement('submit', 'submitbutton', "  Import ");
			$mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);
			
			$mform->closeHeaderBefore('btpreview');	
        }
    }

//*************************************************************************************************
//*					CÁC FORM QUẢN LÝ THÔNG TIN NGÀNH HỌC	
//*************************************************************************************************
class form_add_major extends moodleform{

	public function definition () {
		global $DB;
		$mform =& $this->_form;
		
		//Lấy dữ liệu từ GET hoặc POST
		$programid = $this->_customdata['program'];
		$load = $this->_customdata['load'];
		//Lưu lại dữ liệu để sử dụng trong trường hợp resubmit			
		$mform->addElement('html','<input type=hidden name=program value='.$programid. '>');
		//add header
		$mform->addElement('html','<div class="headingblock header"><a href="#" onclick="show_panel();">Chuyên ngành mới</a></div>');
		
		//Chương trình đào tạo chuyên ngành trực thuộc
		$rs = $DB->get_records('program');
		$m = array(''=>'- Chọn chương trình đào tạo');
		foreach($rs as $r) {
			$m[$r->id] = $r->program_name. ' - Hệ '.$r->program_type;
		}
		$mform->addElement('select', 'cboProgram', 'Chương trình đào tạo', $m, array('onChange'=>'load_major_table(this.options[selectedIndex].value);'));
		$mform->addRule('cboProgram', 'This field cannot be blanked!', 'required', null, 'client');
		//Load lại các môn học thuộc programid
		if($programid != "") {
			$selectedProgram = $DB->get_record('program', array('id'=>$programid));
			$mform->setDefault('cboProgram', $programid);
			echo '<script>load_major_table('.$programid.')</script>';
		}
		
		$mform->addElement('html','<div id="control_panel" style="display: none;" >');
		//Tên chuyên ngành
		$mform->addElement('text', 'txtten', 'Tên ngành', $attributes='size="50"');
		$mform->setType('txtten', PARAM_TEXT);
		$mform->addRule('txtten', 'This field cannot be blanked!', 'required', null, 'client');
		
		//Mô tả tổng quát về chuyên ngành
		$mform->addElement('htmleditor', 'txtDesc', 'Mô tả', $attributes='size="20"');
		$mform->setType('txtten', PARAM_TEXT);
		//$mform->addRule('txtDescription', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->addElement('html','</div>');
		$mform->addElement('submit', 'submitbutton', 'Add major', array('id'=>'submitbutton', 'style'=>'display: none;'));
		$mform->closeHeaderBefore('submitbutton');
		$mform->addElement('html','<div id="lodiv" style="display: none;"><div id="mess" class="success" ></div></div>');
		
		//Hiển thị các ngành trong chương trình được chọn
		$mform->addElement('html','<div style="display:none;" id="major_tb" ></div>');
	}
	
	
	
}

/*
 * Form cập nhật thông tin của ngành học
 */ 
class form_modify_major extends moodleform{

	public function definition () {
		global $DB;
		$mform =& $this->_form;
		
		//Lấy dữ liệu từ GET hoặc POST
		$id = $this->_customdata['id'];
		
		//Lấy major có id = majorid
		$major = $DB->get_record('major',array('id'=>$id));
		//Lưu lại dữ liệu để sử dụng trong trường hợp resubmit			
		$mform->addElement('html','<input type=hidden name=id value='.$id. '>');
		$mform->addElement('html','<input type=hidden name=programid value='.$major->program_id. '>');
		$mform->addElement('html','<div class="headingblock header">Chỉnh sửa thông tin ngành học</div>');
		 
		//Chương trình đào tạo chuyên ngành trực thuộc
		$program = $DB->get_record('program', array('id'=>$major->program_id));
		
		$mform->addElement('text', 'txtprogram', "Thuộc chương trình", array('id'=>'txtprogram', 'readonly'=>'readonly','size'=>'50'));
		$mform->setDefault('txtprogram',$program->program_name.' - Hệ '.$program->program_type);
		
		
		//Tên chuyên ngành
		$mform->addElement('text', 'txtten', 'Tên ngành', $attributes='size="50"');
		$mform->setType('txtten', PARAM_TEXT);
		$mform->addRule('txtten', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->setDefault('txtten',$major->major_name);
		
		//Mô tả tổng quát về chuyên ngành
		$mform->addElement('htmleditor', 'txtdesc', 'Mô tả', $attributes='size="20"');
		$mform->setType('txtten', PARAM_TEXT);
		$mform->addRule('txtDescription', 'This field cannot be blanked!', 'required', null, 'client');
		$mform->setDefault('txtdesc',$major->description);
		
		$mform->addElement('submit', 'submitbutton', 'Add major');
		$mform->closeHeaderBefore('submitbutton');
		
	}
}
/**
 * Form trình bày thông tin môn học
 * được sử dụng cho trang subject_info
 */ 
class form_view_major extends moodleform {
	public function definition () 
	{	
		global $DB;
		$mform =& $this->_form;
		
		//Lấy dữ liệu từ GET hoặc POST
		$id = $this->_customdata['id'];
		//Lưu lại dữ liệu để sử dụng trong trường hợp resubmit			
		$mform->addElement('html','<input type=hidden name=id value='.$id. '>');
		$mform->addElement('html','<input type=hidden name=programid value='.$subject->program_id. '>');
		$mform->addElement('html','<div class="headingblock header" align=center>Thông tin ngành học</div>');
		
		$mform->addElement('html','<table class=generalbox align=center cellpadding="5">');
		//Lấy ngành học có id = majorid 
		$major = $DB->get_record('major',array('id'=>$id));
		$mform->addElement('html','<tr><td class=header>Ngành</td><td>'.$major->major_name.'</td></tr>');
		
		//Lấy chương trình đào tạo mà môn học phải nằm trong 1 chương trình đào tạo
		$program = $DB->get_record('program', array('id'=>$major->program_id));
		$mform->addElement('html','<tr><td class=header>Áp dụng trong chương trình</td><td>'.$program->program_name. ' - Hệ '.$program->program_type.'</td></tr>');
		
		$mform->addElement('html','</td></tr>');
		$mform->addElement('html','</table>');
		
		//Lấy các khối kiến thức áp dụng trong chuyên ngành này
		$sql = 'SELECT mdl_block_of_knowledge.id, mdl_block_of_knowledge.bok_name '.
				' FROM mdl_block_of_knowledge inner join mdl_major_block on mdl_block_of_knowledge.id = mdl_major_block.blockofknowledge_id '.
				' WHERE mdl_major_block.major_id = '.$id;	
		$blocks = $DB->get_records_sql($sql);
		$mform->addElement('html','<div class=heading1 >Các môn học được giảng dạy trong ngành</div>');
		$i = 0;
		foreach($blocks as $b) {
			$i++;
			$mform->addElement('html','<div class=heading2 >'.$i.'. '.$b->bok_name.'</div>');
			//Lấy danh sách các môn học  của mỗi block
			$sql = 'SELECT * '.
				   ' FROM mdl_subject_block inner join mdl_subject on mdl_subject.id = mdl_subject_block.subject_id '.
				   ' WHERE mdl_subject_block.blockofknowledge_id = '.$b->id;
			$subjects = $DB->get_records_sql($sql);
			$mform->addElement('html','<table class=generalbox align=center cellpadding="3"><th>STT</th><th>Mã số</th><th>Tên môn học</th><th>Số tín chỉ</th>');
			$j = 0;
			
			foreach($subjects as $s) {
				$j++;
				$mform->addElement('html','<tr><td>'.$j.'</td><td>'.$s->subject_id.'</td><td>'.$s->subject_name_vn.'</td><td>'.$s->subject_credit.'</td></tr>');
			}
			$mform->addElement('html','</table>');
		}
	}
}

//*************************************************************************************************
//*					CÁC FORM QUẢN LÝ MỞ COURSE TỪ MÔN HỌC		
//*************************************************************************************************
class form_course_generation_test extends moodleform {
	public function definition () {
		global $DB;
		$mform =& $this->_form;
		
		$mform->addElement('date_time_selector','datetime', 'start day');
		$mform->addElement('text', 'txtSubjectName','My subject', array('id'=>'txtSubjectName'));
		
		$mform->addElement('submit', 'submitbutton', 'Add major');
		$mform->closeHeaderBefore('submitbutton');
	}	
}

/**
 * Form mở course cho subject
 * được sử dụng cho trang generate_course 
 */
class form_course_generation extends moodleform{

	public function definition () {
		global $DB, $CFG;
		$image_path = $CFG->wwwroot .'/local/myplugin/image/';
		$mform =& $this->_form;
		
		//Lấy dữ liệu từ GET hoặc POST
		$programid = $this->_customdata['program'];
		
		//Lưu lại dữ liệu để sử dụng trong trường hợp resubmit			
		$mform->addElement('html','<input type=hidden name=program value='.$programid. '>');
		
		echo '<div id="toolTipLayer" style="position:absolute; visibility: hidden;left:0;right:0"></div>';
		
		//add header
		$mform->addElement('html','<div class="headingblock header">Khóa học</div>');
		
		
		//Chọn chương trình đào tạo vì 1 môn học phải nằm trong 1 chương trình đào tạo
		$options = array('all'=>'- Chọn một chuyên ngành hoặc chương trình đào tạo');
		$programs = $DB->get_records('program');
		foreach($programs as $program) {
			//parent option
			$options[$program->id] = $program->program_name.' - Hệ '.$program->program_type;
		}
		$mform->addElement('select', 'cbprogram', "Chọn chương trình", $options, array('onChange'=>'get_subjects_to_generate_course(this.options[this.selectedIndex].value);'));
		$mform->addRule('cbprogram', 'Chọn một chuyên ngành hoặc chương trình đào tạo!', 'required', null, 'client');
		
		//Load lại các môn học thuộc programid
		if($programid != "") {
			$selectedProgram = $DB->get_record('program', array('id'=>$programid));
			$mform->setDefault('cbprogram', $programid);
			echo '<script>get_subjects_to_generate_course('.$programid.')</script>';
		}
		//Chọn ngày mở lớp
		$mform->addElement('date_selector','dateOpenCourse','Chọn ngày mở lớp', array('startyear'=>'2000'));
		$mform->addElement('html', '<input type=image src="'.$image_path.'generate_course_2.jpg" alt="Open Course" />'); //tương đương $mform->addElement('submit', 'submitbutton', 'Open Course');
		
		$mform->addElement('html','<div id="lodiv" style="display: none;"><div id="mess" class="success" ></div></div>');
		$mform->addElement('html','<div id="listmon" class="headingblock header" style="margin-top: 10px; display: none;">Các môn hiện có</div>');
		$mform->addElement('html','<div id="subject_tb" style="display:none; margin-left:10%; margin-right:10%; height:400px; overflow:scroll; border: .2em ridge; margin-top: 10px;"></div>');
		
	}
}
 
/****************************************************************************************************
 * 						CÁC FORM QUẢN LÝ THÔNG TIN CHUẨN ĐẦU RA LEARNING OUTCOMES
******************************************************************************************************/ 
class form_add_lo extends moodleform{

	public function definition () {
		$mform =& $this->_form;
		global $DB;
		$mform->addElement('header', 'thongtinctdt', 'Learning Outcome Information');
		
		$rs = $DB->get_records('program');
		$m = array(''=>'Choose a Program');
		foreach($rs as $r) {
			$m[$r->id] = $r->program_name;
		}
		
		//add program select
		$selectpro=$mform->addElement('select', 'cblo_program', "Select a Program", $m, array('onChange'=>'M.local_myplugin.get_all_los();'));
		$selectpro->setMultiple(false);
		$mform->addRule('cblo_program', 'Please select an Academic Program!', 'required', null, 'client');
		
		$dslo=array('all'=>'Any');
		
		
		$mform->addElement('select', 'cbparentlevel', "Parent Level", $dslo, array('id'=>'test'));
		$mform->setDefault('cbparentlevel', 'all');
		unset($dslo);
		$mform->addRule('cbparentlevel', 'Please select a parent level!', 'required', null, 'client');
		
		$this->init_javascript_enhancement('cbparentlevel', 'smartselect', 
			array('selectablecategories' => true, 'mode' => 'compact'));
		
		$mform->addElement('text', 'txtten', 'Name', $attributes='size="40"');
		$mform->setType('txtten', PARAM_TEXT);
		$mform->addRule('txtten', 'This field cannot be blanked!', 'required', null, 'client');
		
		$mform->addElement('submit', 'submitbutton', get_string('savechanges'));
		
		$mform->closeHeaderBefore('submitbutton');
		$mform->addElement('html','<div id="lodiv" style="display: none;"><div id="mess" class="success" ></div></div>');
	}
	
}
	
/**
 * Form nhập dữ liệu learning outcomes từ file excel
 * được sử dụng cho trang import_lo
 */ 
class form_import_lo extends moodleform{

	public function definition () {
		$mform =& $this->_form;
		
		$mform->addElement('html','<div class="headingblock header" >Chuẩn đầu ra</div>');
		global $DB;
		$rs = $DB->get_records('program');
		$m = array(''=>'- Chọn chương trình đào tạo');
		foreach($rs as $r) {
			$m[$r->id] = $r->program_name. ' - Hệ '.$r->program_type;
		}
		
		//add program select
		$selectpro=$mform->addElement('select', 'cbprogram', "Chương trình đào tạo", $m);
		$selectpro->setMultiple(false);
		$mform->addRule('cbprogram', 'Please select an Academic Program!', 'required', null, 'client');
		
		$options = array();
		$options['accepted_types'] = array('*.xls');
		$mform->addElement('filepicker', 'userpicturesfile', get_string('file'), 'size="40"', $options);
		$mform->addRule('userpicturesfile', null, 'required');
		
		$buttonarray=array();
		$buttonarray[] =& $mform->createElement('submit', 'submitpreview', "  Preview ");
		$buttonarray[] =& $mform->createElement('submit', 'submitbutton', "  Import ");
		$mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);
		
		$mform->closeHeaderBefore('btpreview');
	}
}
/**
 * Form nhập dữ liệu learning outcomes từ file excel
 * được sử dụng cho trang import_lo
 */ 
class form_view_lo extends moodleform{

	public function definition () {
	   $mform =& $this->_form;
		global $DB;
		$mform->addElement('html','<div class="headingblock header">Chuẩn đầu ra</div>');
		
		$rs = $DB->get_records('program');
		$m = array(''=>'Chọn chương trình đào tạo');
		foreach($rs as $r) {
			$m[$r->id] = $r->program_name. ' - Hệ '.$r->program_type;
		}
		
		//add program select
		$selectpro = $mform->addElement('select', 'cblo_program', "Chương trình", $m, array('onChange'=>'M.local_myplugin.get_all_los();'));
		$selectpro->setMultiple(false);
		$mform->addRule('cblo_program', 'Chọn một chương trình đào tạo!', 'required', null, 'client');
		
		$buttonarray=array();
		$buttonarray[] =& $mform->createElement('submit', 'submitbutton', "  Xem ", array('onClick'=>'enable_export();'));
		$buttonarray[] =& $mform->createElement('button', 'btexport', "  Lưu thành file Excel ", array('onClick'=>'export_lo();'));
		$mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);
		$mform->closeHeaderBefore('buttonar');
	}
}
	
	//========================view Curriculum=============================
	class form_view_curriculum2 extends moodleform {
	
        public function definition () {
           $mform =& $this->_form;
			global $DB;
			$mform->addElement('header', 'thongtinctdt', 'Learning Outcome Information');
			
			$rs = $DB->get_records('program');
			$m = array(''=>'Choose a Program');
			foreach($rs as $r) {
				$m[$r->id] = $r->program_name;
			}
			
			//add program select
			$selectpro=$mform->addElement('select', 'cblo_program', "Select a Program", $m, array('onChange'=>'M.local_myplugin.get_all_los();'));
			$selectpro->setMultiple(false);
			$buttonarray=array();
			$buttonarray[] =& $mform->createElement('submit', 'submitbutton', "  View Curriculum");
			$mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);
			$mform->closeHeaderBefore('buttonar');
			
        }
		
    }